// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

/*理解：
  当SplashScreen.qml由main.qml的splashLoader加载时，
  SplashScreen按指定位置显示图片。显示图片前有一个加载过程（很快）。当整个SplashScreen.qml显示好时，会执行\
  Component.onComplted，即开始1秒计时。
  计时时间到，执行Timer的onTrigge，将splashIsReady置true。当然会连带ready的值更改，进而发送信号readyToGo()。

  在main.qml中，已通过Connections{}连接了SplashScreen.qml的信号readyToGo()。在function onReadyToGo()中，
  appLoader显示，并执行：初始化和强制焦点。
  splashLoader隐藏，并释放源，即setSource("")。
*/

import QtQuick
import "."

Item {
    id: root
    anchors.fill: parent

    property bool appIsReady: false
    property bool splashIsReady: false

    property bool ready: appIsReady && splashIsReady

    onReadyChanged: if (ready) readyToGo();         //属性ready自带。即当ready值变化时，自动执行onReadyChanged。在后者，会发送信号readyToGo()。不论ready值是怎么变的。

    signal readyToGo()                              //信号处理函数必定是onReadyToGo()，它在main.qml。

    function appReady()
    {
        appIsReady = true
    }

    function errorInLoadingApp()
    {
        Qt.quit()
    }

    Image {
        id: logo
        anchors.centerIn: parent
        width: Math.min(parent.height, parent.width)*0.6
        height: GameSettings.heightForWidth(width, sourceSize)
        source: "images/logo.png"       //红圈白心图片
    }

    Text {
        anchors.top: logo.bottom
        anchors.topMargin: 100
        anchors.horizontalCenter: parent.horizontalCenter

        text: qsTr("E610 V24.08.06")
        color: "green"
        font.pointSize: 24
    }

    Timer {
        id: splashTimer
        interval: 1000
        onTriggered: splashIsReady = true
    }

    Component.onCompleted: splashTimer.start()
}
